// 导入题目管理工具类
const testQuestionManager = require('../../../../utils/testQuestionManager.js');

Page({
  // 页面初始数据
  data: {
    testType: '',       // 测试类型，如SAS或SDS
    testName: '',       // 测试名称
    questions: [],      // 题目列表
    loading: true,      // 加载状态标志
    showEmptyState: false,  // 是否显示空状态
    includeInactive: false, // 是否包含未启用的题目
    showConfirmDelete: false, // 显示删除确认弹窗
    currentQuestionId: null, // 当前操作的题目ID
    searchKeyword: '', // 搜索关键词
    originalQuestions: [] // 保存原始题目列表，用于搜索过滤
  },

  // 页面加载时执行，获取路由参数并初始化数据
  onLoad: function(options) {
    // 检查是否有正确的测试类型参数
    if (!options.type) {
      wx.showToast({
        title: '参数错误',
        icon: 'none'
      });
      // 延迟返回上一页
      setTimeout(() => {
        wx.navigateBack();
      }, 1500);
      return;
    }

    // 根据测试类型设置测试名称
    const testType = options.type;
    let testName = '测试量表';
    if (testType === 'SAS') {
      testName = '焦虑自评量表(SAS)';
    } else if (testType === 'SDS') {
      testName = '抑郁自评量表(SDS)';
    }

    this.setData({ 
      testType,
      testName
    });

    // 加载题目列表
    this.loadQuestions();
  },

  // 从服务器获取题目列表数据
  loadQuestions: async function() {
    this.setData({ loading: true });
    try {
      // 调用管理工具获取题目
      const questions = await testQuestionManager.getTestQuestions(
        this.data.testType, 
        this.data.includeInactive
      );
      
      console.log('获取到题目列表:', questions);
      
      // 更新页面数据状态
      this.setData({
        questions,
        originalQuestions: questions,
        loading: false,
        showEmptyState: questions.length === 0
      });
    } catch (error) {
      // 错误处理
      console.error('加载题目列表失败', error);
      this.setData({ 
        loading: false,
        showEmptyState: true
      });
      wx.showToast({
        title: '加载失败，请重试',
        icon: 'none'
      });
    }
  },

  // 处理搜索功能
  onSearch: function(e) {
    const keyword = e.detail.value.trim();
    this.setData({ searchKeyword: keyword });
    
    // 如果关键词为空，恢复显示全部题目
    if (!keyword) {
      this.setData({
        questions: this.data.originalQuestions
      });
      return;
    }
    
    // 根据关键词过滤题目内容
    const filteredQuestions = this.data.originalQuestions.filter(q => 
      q.content.includes(keyword)
    );
    
    // 更新筛选后的结果
    this.setData({
      questions: filteredQuestions,
      showEmptyState: filteredQuestions.length === 0
    });
  },

  // 清除搜索条件，恢复原始列表
  clearSearch: function() {
    this.setData({
      searchKeyword: '',
      questions: this.data.originalQuestions,
      showEmptyState: this.data.originalQuestions.length === 0
    });
  },

  // 切换是否显示未启用题目的开关
  toggleIncludeInactive: function() {
    this.setData({
      includeInactive: !this.data.includeInactive
    }, () => {
      // 状态切换后重新加载题目
      this.loadQuestions();
    });
  },

  // 跳转到题目编辑页面，传递测试类型和题目ID
  goToEditQuestion: function(e) {
    const questionId = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/staff/test-management/question-edit/index?type=${this.data.testType}&id=${questionId || ''}`
    });
  },

  // 显示删除确认对话框
  showDeleteConfirm: function(e) {
    const questionId = e.currentTarget.dataset.id;
    this.setData({
      showConfirmDelete: true,
      currentQuestionId: questionId
    });
  },

  // 取消删除操作
  cancelDelete: function() {
    this.setData({
      showConfirmDelete: false,
      currentQuestionId: null
    });
  },

  // 确认删除题目并处理结果
  confirmDelete: async function() {
    const questionId = this.data.currentQuestionId;
    if (!questionId) return;
    
    // 显示加载提示
    wx.showLoading({
      title: '删除中...',
      mask: true
    });
    
    try {
      // 调用删除题目的API
      const success = await testQuestionManager.deleteTestQuestion(questionId);
      
      // 根据删除结果给出反馈
      if (success) {
        wx.showToast({
          title: '删除成功',
          icon: 'success'
        });
        // 重新加载题目列表
        this.loadQuestions();
      } else {
        wx.showToast({
          title: '删除失败',
          icon: 'none'
        });
      }
    } catch (error) {
      // 错误处理
      console.error('删除题目失败', error);
      wx.showToast({
        title: '删除失败',
        icon: 'none'
      });
    } finally {
      // 无论成功失败都隐藏加载提示并重置状态
      wx.hideLoading();
      this.setData({
        showConfirmDelete: false,
        currentQuestionId: null
      });
    }
  },

  // 添加新题目，跳转到编辑页面
  addNewQuestion: function() {
    wx.navigateTo({
      url: `/pages/staff/test-management/question-edit/index?type=${this.data.testType}`
    });
  },

  // 下拉刷新处理函数
  onPullDownRefresh: function() {
    this.loadQuestions().then(() => {
      wx.stopPullDownRefresh();
    });
  },

  // 页面显示时触发，重新加载数据以保持最新状态
  onShow: function() {
    if (this.data.testType) {
      this.loadQuestions();
    }
  },

  // 返回上一页操作
  goBack: function() {
    wx.navigateBack();
  }
}); 